A barcode is a machine-readable representation of information that is used to identify and convey information about products. Barcodes were first used commercially in 1966. In 1970 several standardized versions came to the markets and industries. Today the ubiquitous necessity for barcodes and their cheap implementation has made them so popular that you can find them everywhere on goods such as food items, books, different computer hardware and components, electronic cards, newspapers and magazines. In fact barcodes help us to simplify the process of identification by saving the recognition time and decreasing the error occurrence probability level.
Today in supermarkets and stores, dedicated barcode readers are widely used to read barcodes. There exist different kinds of barcode readers with different implementation algorithms. Each of them has its own advantages and disadvantages. Some are cheap, lightweight and portable, some are bigger but more powerful with long distance scanning ability, some need barcodes to be swiped while other can read the barcode at a glance. Such dedicated barcode readers are typically fast but even these devices sometimes fail, for example due to reshaped or smudged barcodes. Dedicated barcode readers also have the disadvantages that they can not be used for anything else.
These limitations of dedicated barcode readers have brought about the alternative technique of using digital cameras for taking an image of the barcode and process the image in order to decode the barcode. In such a case, camera-equipped devices, such as mobile telephone and other portable units having built in or connectable digital cameras, can be used for reading barcodes. Reading barcodes by image processing might be slower than using barcode scanners but in some cases they are better. One example is when reading barcodes from a monitor screen or generally over surfaces that do not reflect light very well. Taking an image of a barcode can, though, lead to problems with blurry images and failure of the recognition of the barcode. Such blurring can originate from a number of reasons, such as object distortion, camera shake or tilting, out of focus and distance perspective, noise, light maladjustment or shadows, digitization errors or sampling errors made by the digital camera.
A very common problem when taking images of barcodes and that can negatively affect the barcode recognition is blurring caused by movement of the digital camera or the barcode during the image acquisition. In such a case, image deblurring may be necessary before the barcode recognition can be started. Such image deblurring can be based on inverse convolution or deconvolution, in which the true or latent image is estimated and restored by some knowledge of the degradation parameters causing the blurring. Examples of such deconvolution algorithms used in the art include Wiener deconvolution and Lucy-Richardson deconvolution. These two algorithms are so-called non-blind deconvolution algorithms since they all utilize a known point spread function (PSF) as a deconvolution parameter. Generally, the PSF is not known and therefore blind deconvolution algorithms must be used, which perform deblurring without the exact knowledge of the degradation parameters.
In document [1] a blind deconvolution of barcode signals is performed by global optimization of a gradient-based target function. The deblurring algorithm uses a global optimization of a target function by a gradient descent. Document [2] instead discloses a joint nonuniform illumination estimation and deblurring for barcode signals based on a penalized nonlinear squares target function.
Prior art deblurring algorithms use gradients or derivatives in order to determine whether a candidate kernel is a suitable choice for usage when deblurring the blurred barcode image. Such gradient-based methods are generally very noise sensitive and can lead to generation of a pseudo-barcode when deblurring the barcode image. There is therefore a need for an efficient deblurring of barcode images.